/*function foo(){
    console.log(this.a)
}
var obj={
    a:2
}
foo.call(obj);// 显式绑定
var bar=function(){
    foo.call(obj);/// 硬绑定
}
bar();
setTimeout(bar,1000);
bar.call(window);// 硬绑定，不能修改它的this了
*/
function foo(something) { 
    console.log( this.a, something ); 
    return this.a + something; 
   } 
   var obj = { 
    a:2 
   }; 
   var bar = function() { 
    return foo.apply( obj, arguments );  //硬绑定
   }; 
   // 简单的辅助绑定函数
   function bind(fn, obj) { 
    return function() { 
    return fn.apply( obj, arguments ); 
    }; 
   }
   var ff=bind(foo,obj);
   var bb=ff(4);
   console.log(bb);
   var bz=foo.bind(obj);
   var a=bz(2);
   console.log(a);
   var b = bar( 3 ); // 2 3 
   console.log( b ); // 5
